setTimeout(function () {
    var a = 'hello2'
    setTimeout(function () {
        var b = 'lagou2'
        setTimeout(function () {
            var c = 'i love u'
            console.log(a + b + c)
        }, 300)
    }, 300)
}, 300)

//EX
Promise.prototype.delay = function (time) {
    return this.then(function (value) {
        return new Promise(function (resolve) {
            setTimeout(resolve.bind(null, value), time)
        });
    });
}
Promise.resolve('hello').delay(300)
    .then(value => { return `${value}lagou` }).delay(300)
    .then(value => { return `${value}i love u` }).delay(300)
    .then(value => console.log(value))